/*
 * @lc app=leetcode.cn id=205 lang=javascript
 *
 * [205] 同构字符串
 */

// @lc code=start
/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isIsomorphic = function (s, t) {
  if (s.length !== t.length) return false;

  const sMap = new Map(); // 记录 s 到 t 的映射
  const tMap = new Map(); // 记录 t 到 s 的映射

  for (let i = 0; i < s.length; i++) {
    const charS = s[i];
    const charT = t[i];

    // 检查 s 到 t 的映射是否一致
    if (sMap.has(charS)) {
      if (sMap.get(charS) !== charT) return false;
    } else {
      sMap.set(charS, charT);
    }

    // 检查 t 到 s 的映射是否一致
    if (tMap.has(charT)) {
      if (tMap.get(charT) !== charS) return false;
    } else {
      tMap.set(charT, charS);
    }
  }

  return true;
};
// @lc code=end
